<?php

  // Pour ajouter des catégories
  // auteur : Thomas Bayer
  
class fAddTeamCategory extends aFeature {

   public function __construct() {
      $this->_acl = new AccessControlList();
      $this->_acl->setGranted(7);
      $this->_acl->setGranted(3);
   }

   public static function getTocEntry() {
      return "Créer une catégorie";
   }

   public static function getRealName() {
		return "Ajouter une catégorie";
	}
	
	public static function getSemantic() {
		$res  = "Cette fonctionnalité permet d'ajouter une catégorie dans le système Balloon";
		return $res;
	}


	protected function run() {
  	$action = PropRetriever::getProp($_POST,"action");
  	if ($action == "add")
  		return $this->addTeamCategory();
 		return $this->displayForm();
	}
  
	private function addTeamCategory() {
		$catLabel  = PropRetriever::getProp($_POST,"catLabel");
		$catDirector = PropRetriever::getProp($_POST,"catDirector");
		$userId   = PropRetriever::getProp($_POST,"userId");
		
		$errors = array();
		
		if ($catLabel == "")
			$errors["catLabel"] = "Le nom de la catégorie ne peut être vide !";
		if ($catDirector == -1)
			$errors["catDirector"] = "Une catégorie doit obligatoirementavoir un responsable !";
		
		if (count($errors) != 0)
			return $this->displayForm($errors);
		
		// On fait l'ajout : 
		$season = Login::seasonChoosen();
		$aTeamCategory = new TeamCategory($catDirector, $userId, $catLabel, $season);
		$aTeamCategory->setDirector($catDirector);
		$aTeamCategory->setLabel(ucwords(strtolower($catLabel)));
		$aTeamCategory->setUser($userId);
		
		// A t'on déja ajouté cette catégorie ??
		$lastInsert = Login::lastInsert();
		if ($lastInsert["ClassName"] == "TeamCategory") {
			$exist = True;
			
			try {
				$lastTeamCategory = TeamCategory::read($lastInsert["LastId"]);
			}
			catch(Exception $e) {
			  $exist = False;
			}
			
			if ($exist and $lastTeamCategory->soundsLike($aTeamCategory)) {
				$aTeamCategory = $lastTeamCategory;
			}
			else {
				$aTeamCategory->create();
			}
		}
		else {
			$aTeamCategory->create();
		}
		
		Login::lastInsert($aTeamCategory->tag());
		
		// On purge le tableau de données
		$_POST["action"] = "";
		$_POST["catLabel"] = "";
		$_POST["catDirector"] = "";
		$_POST["userId"] = "";
		
		$text = $aTeamCategory->displayLong();
		$head = $this->displayForm();
		$page = <<<EOS
<h2> Ajout effectué avec succès ! </h2>
${text}
EOS;
		return $head . $page;
	}
	
	private function displayForm($errors = array()) {
		$season = Season::read(Login::seasonChoosen(False));
		$season = $season->displayShort();
		
		$catLabel  		= PropRetriever::getProp($_POST,"catLabel");
		$catDirector	= PropRetriever::getProp($_POST,"catDirector");
		$userId    		= PropRetriever::getProp($_POST,"userId");
		
				$COACH = 3;
		$UNKNOWN = "<option value=\"-1\"> Inconnu </option>";
		
		$functionsArray = array($COACH);
		$members = Member::getOnFunction($functionsArray, Login::seasonChoosen(False));
		
		$coachList = Member::getAsList($members[$COACH],$catDirector);
		$adminOptions = User::getAsList(1,$userId);
		
		$style = array();
		$style["catLabel"] = "";
		
		if (($tmp = PropRetriever::getProp($errors,"catLabel")) != "")
			$style["catLabel"] = "class=\"error\"";
		
		$errorsText = "";
		foreach ($errors as $k => $v) {
			$errorsText .= "<li> <span class=\"error\"> $v </span> </li>";
		}
		if ($errorsText != "") {
			$tmp = "<h2> Des erreurs sont survenues ... </h2>";
			$tmp .= "<ul> " . $errorsText . " </ul>";
			$errorsText = $tmp;
		}
		
		
		$page = <<<EOS
<h1> Création d'une catégorie pour la saison [ {$season} ] </h1>

<div align="center">
<br /> <br />
<form method="post" accept-charset="utf-8" name="addTeamCategory"
			action="?add" >

<input type="hidden" name="action" value="add" />

<table> 

<tr> 
<td align="center">

	<fieldset>
		<legend> Informations Administratives </legend>
		<br />
		
		
		<label> 
			<span ${style["catLabel"]}>Nom : </span>
			<input type="text" name="catLabel" class="edit" />
			&nbsp; &nbsp;
		</label>
		<br />		

		<label> 
			<span> Administrateur : </span>
			<select name="userId" class="edit" />
			${adminOptions}
			</select>
			&nbsp; &nbsp;
		</label>
		<br />
		

		<br />
	</fieldset>
	
</td>

<td> &nbsp;&nbsp;&nbsp;&nbsp; </td>

<td align="center">
  <fieldset>
		<legend> Staff </legend>
		<br />
		
		<label> 
			<span>Responsable : </span>
			<select name="catDirector" class="edit" />
			${coachList}
			</select>
			&nbsp; &nbsp;
		</label>
		<br />

		<br /> 
	</fieldset>
</td>
</tr>

<tr>
  <td align="center" colspan="3">
  	<br />
    <input type="submit" value="Ajouter la catégorie dans la base de données" class="edit" />
  </td>
</tr>
</table>
</div>
</form>

${errorsText}
EOS;
		return $page;
	}
		
}
?>